package br.com.vti.sisp_sicrim.antigo.util;

import br.com.vti.sisp_sicrim.antigo.controller.programa.Estcc131;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Funpm001;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Idcpm001;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Ipvpm001;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Pmmpm001;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Rchpm001;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Roupm001;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrp0000;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrp1000;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrp110a;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrp120a;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrp130a;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrp142a;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrp1510;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrp1520;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrp1530;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrp1540;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrp1600;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrpe001;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrpp001;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrpp002;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrpp004;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrpr001;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrpra01;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Veipm001;

public class ExceptionProgram extends RuntimeException {

	/**
	 * Trata erros de execu��o durante o programa e de poss�vel falta de comunica��o com recursos exteriores
	 */
	private static final long serialVersionUID = 1L;
	public Sessao sessao;

	public ExceptionProgram() {
	}

	public ExceptionProgram(Exception e, Sessao sessao, String nomeClasse) {
		trataErro(e, sessao, nomeClasse);
	}

	public void trataErro(Exception e, Sessao sessao, String nomeClasse) {
		UtilBean.mensagemTexto("!--------------------------------------------------------------!");
		UtilBean.mensagemTexto("!  SISP - SISTEMA DE INFORMACOES DE SEGURANCA PUBLICA:         !");
		UtilBean.mensagemTexto("!  TRANSACAO CANCELADA,  ENTRAR EM CONTATO COM A STI,          !");
		UtilBean.mensagemTexto("!  ANALISTA SOLON MIRANDA,  TEL: 9974-8432  OU  227-5588 R-253 !");
		UtilBean.mensagemTexto("!                                                              !");
		UtilBean.mensagemTexto("!  E INFORME OU  LEIA A LINHA ABAIXO:                           !");
		UtilBean.mensagemTexto("!  ERROR NUMERO:", e.getMessage(), "    LINHA:", e.getStackTrace(), " PROGRAMA:", nomeClasse, "!");
		UtilBean.mensagemTexto("!--------------------------------------------------------------!");
	}

	public void trataErroSiscerro(Exception e, Sessao sessao, String nomeClasse) {
		UtilBean.mensagemTexto("!--------------------------------------------------------------!");
		UtilBean.mensagemTexto("!  SISP - SISTEMA DE INFORMACOES DE SEGURANCA PUBLICA:         !");
		UtilBean.mensagemTexto("!  TRANSACAO CANCELADA,  ENTRAR EM CONTATO COM A STI,          !");
		UtilBean.mensagemTexto("!  ANALISTA SOLON MIRANDA,  TEL: 9974-8432  OU  227-5588 R-253 !");
		UtilBean.mensagemTexto("!                                                              !");
		UtilBean.mensagemTexto("!  E INFORME OU LEIA A LINHA ABAIXO:                           !");
		UtilBean.mensagemTexto("!  ERROR NUMERO:", e.getMessage(), "    LINHA:", e.getStackTrace(), " PROGRAMA:", nomeClasse, "!");
		UtilBean.mensagemTexto("!--------------------------------------------------------------!");
		switch (sessao.getSisgsisp().getVlt()) {
		case 02: {
			Veipm001 veipm001 = new Veipm001(null, null);
			veipm001.executar(null);
			break;
		}
		case 03: {
			Rchpm001 rchpm001 = new Rchpm001(null, null);
			rchpm001.executar(null);
			break;
		}
		case 04: {
			// mulpm001(null);
			System.out.println("INCODE ERRO deve chamar Mulpm001 BOOK faltante");
			break;
		}
		case 06: {
			Ipvpm001 ipvpm001 = new Ipvpm001(null, null);
			ipvpm001.executar(null);
			break;
		}
		case 07: {
			Roupm001 roupm001 = new Roupm001(null, null);
			roupm001.executar(null);
			break;
		}
		case 8: {
			Pmmpm001 pmmpm001 = new Pmmpm001(null, null);
			pmmpm001.executar(null);
			break;
		}
		case 13: {
			Idcpm001 idcpm001 = new Idcpm001(null, null);
			idcpm001.executar(null);
			break;
		}
		case 15: {
			Funpm001 funpm001 = new Funpm001(null, null);
			funpm001.executar(null);
			break;
		}
		default: {
			// continue;
		}
		}
	}

	public void trataErroScrperro(Exception e) {
		// IF *ERROR-NR = 3145
		// RETRY
		// ELSE
		// IF *ERROR-NR = 3198 || *ERROR-NR == 0972 || *ERROR-NR == 9969 ||
		// *ERROR-NR == 4439 || *ERROR NE 0
		// INPUT NO ERASE 'NUMERO DO RENAID JA EXISTE' ALARM
		// WRITE 'ERRO' *ERROR-LINE *ERROR-NR *PROGRAM
		// RETRY
		// END-IF

		UtilBean.mensagemTexto("!--------------------------------------------------------------!");
		UtilBean.mensagemTexto("!  SISP - SISTEMA DE INFORMACOES DE SEGURANCA PUBLICA:         !");
		UtilBean.mensagemTexto("!  TRANSACAO CANCELADA,  ENTRAR EM CONTATO COM A STI,          !");
		UtilBean.mensagemTexto("!  ANALISTA SOLON MIRANDA,  TEL: 9974-8432  OU  227-5588 R-253 !");
		UtilBean.mensagemTexto("!                                                              !");
		UtilBean.mensagemTexto("!  E INFORME OU LEIA A LINHA ABAIXO:                           !");
		UtilBean.mensagemTexto("!  ERROR NUMERO:", e.getMessage(), "    LINHA:", e.getStackTrace(), " PROGRAMA:", e.getClass().getSimpleName(), "!");
		UtilBean.mensagemTexto("!--------------------------------------------------------------!");
		// END-IF
		switch (sessao.getScrg001().getWVltw()) {
		case 02: {
			Veipm001 veipm001 = new Veipm001(null, null);
			veipm001.executar(null);
			break;
		}
		case 03: {
			Rchpm001 rchpm001 = new Rchpm001(null, null);
			rchpm001.executar(null);
			break;
		}
		// MODULO DE VEICULOS
		case 04: {
			// mulpm001(null);
			System.out.println("INCODE ERRO deve chamar Mulpm001 BOOK faltante");
			break;
		}
		// MODULO CONDUTOR (RENACH)
		case 06: {
			Ipvpm001 ipvpm001 = new Ipvpm001(null, null);
			ipvpm001.executar(null);
			break;
		}
		// MODULO DE MULTAS
		case 07: {
			Roupm001 roupm001 = new Roupm001(null, null);
			roupm001.executar(null);
			break;
		}
		// MODULO DE IPVA
		case 8: {
			Pmmpm001 pmmpm001 = new Pmmpm001(null, null);
			pmmpm001.executar(null);
			break;
		}
		// MODULO DE ROUBOS E FURTOS(RENAVAN)
		case 13: {
			Idcpm001 idcpm001 = new Idcpm001(null, null);
			idcpm001.executar(null);
			break;
		}
		// MODULO DA PM
		case 15: {
			Funpm001 funpm001 = new Funpm001(null, null);
			funpm001.executar(null);
			break;
		}
		// MODULO DE ID. CIVIL
		default: {
			// continue;
		}
		}
	}

	public void trataErroScrcerro(Exception e, Sessao sessao, String nomeClasse) {

		UtilBean.mensagemTexto("TRANSACAO CANCELADA, ENTRAR EM CONTATO COM A SEATI - SOLON");
		UtilBean.mensagemTexto("ERROR NUMERO:", e.getMessage(), " LINHA:", e.getStackTrace());
		UtilBean.mensagemTexto(" PROGRAMA:" + e.getClass().getSimpleName());

		switch (sessao.getScrg001().getWVltw()) {
		case 01: {
			Scrp0000 scrp0000 = new Scrp0000(null, null);
			scrp0000.executar(null);
			// TELA INICIAL, ENTRADA NO SISTEMA
			break;
		}
		case 02: {
			Scrpp001 scrpp001 = new Scrpp001(null, null);
			scrpp001.executar(null);
			// MENU DE ATESTADO
			break;
		}
		case 03: {
			Scrp1000 scrp1000 = new Scrp1000(null, null);
			scrp1000.executar(null);
			// MENU PRINCIPAL DO SISTEMA
			break;
		}
		case 04: {
			Scrpp002 scrpp002 = new Scrpp002(null, null);
			scrpp002.executar(null, null, null, null);
			// EMITE ATESTADO DE ANTECEDENTES
			break;
		}
		case 05: {
			Scrpp004 scrpp004 = new Scrpp004(null, null);
			scrpp004.executar(null);
			// HISTORICO DE EMISSOES DE ATESTADOS
			break;
		}
		case 06: {
			Scrp110a scrp110a = new Scrp110a(null, null);
			scrp110a.executar(null, null, null, null, null, null);
			// INCLUSAO DA FICHA CRIMINAL
			break;
		}
		case 07: {
			Scrp120a scrp120a = new Scrp120a(null, null);
			scrp120a.executar(null, null, null, null, null, null, null);
			// ALTERACAO DA FICHA CRIMINAL
			break;
		}
		case 8: {
			Scrp130a scrp130a = new Scrp130a(null, null);
			scrp130a.executar(null, null, null);
			// EXCLUSAO DA FICHA CRIMINAL
			break;
		}
		case 9: {
			Scrp142a scrp142a = new Scrp142a(null, null);
			scrp142a.executar(null);
			// CONSULTA DA FICHA CRIMINAL
			break;
		}
		case 10: {
			Scrp1600 Scrp1600 = new Scrp1600(null, null);
			Scrp1600.executar(null, null, null, null);
			// RELATORIOS
			break;
		}
		case 11: {
			Scrp1510 scrp1510 = new Scrp1510(null, null);
			scrp1510.executar(null);
			// INCLUSAO DE USUARIOS
			break;
		}
		case 12: {
			Scrp1520 scrp1520 = new Scrp1520(null, null);
			scrp1520.executar(null, null);
			// ALTERACAO DE USUARIOS
			break;
		}
		case 13: {
			Scrp1530 scrp1530 = new Scrp1530(null, null);
			scrp1530.executar(null, null);
			// CONSULTA AOS USUARIOS
			break;
		}
		case 14: {
			Scrp1540 scrp1540 = new Scrp1540(null, null);
			scrp1540.executar(null);
			// RELATORIOS DE USUARIOS
			break;
		}
		case 15: {
			Scrp120a scrp120a = new Scrp120a(null, null);
			scrp120a.executar(null, null, null, null, null, null, null);
			// ALTERACAO DA FICHA CRIMINAL
			break;
		}
		case 16: {
			Scrp130a scrp130a = new Scrp130a(null, sessao);
			scrp130a.executar(null, null, null);
			// EXCLUSAO DE FICHA CRIMINAL
			break;
		}
		case 17: {
			Estcc131 estcc131 = new Estcc131(null, null);
			estcc131.executar(null, null);
			// ESTATISTICAS DO CADASTRO CRIMINAL
			break;
		}
		case 18: {
			Scrpr001 scrpr001 = new Scrpr001(null, null);
			scrpr001.executar(null, null);
			// FOLHA DE ANTECEDENTES CRIMINAIS
			break;
		}
		case 19: {
			Scrpra01 scrpra01 = new Scrpra01(null, null);
			scrpra01.executar(null, null);
			// FOLHA COMPLETA DE ANTECEDENTES
			break;
		}
		case 20: {
			Scrpe001 scrpe001 = new Scrpe001(null, null);
			scrpe001.executar(null);
			// ESTATISTICAS DE ATESTADO ANTECEDEN
			break;
		}
		default: {
			// continue;
		}
		}
	}
}